package com.tangsm.spring.mvc.mybatis.enums;

import java.util.Arrays;
import java.util.Optional;

/**
 * 数据库数据源类型
 * @author tangsm
 * @date 2021-08-02 17:55:28
 */
public enum DbTypeEnum {
    /**
     * MySQL数据源
     */
    MYSQL("dataSourceMysql", "MySQL数据源"),
    /**
     * Oracle数据源
     */
    ORACLE("dataSourceOracle", "Oracle数据源");

    /**
     * 数据源类型编码
     */
    private final String code;
    /**
     * 数据源类型标题
     */
    private final String title;

    DbTypeEnum(String code, String title) {
        this.code = code;
        this.title = title;
    }

    public String getCode() {
        return code;
    }

    public String getTitle() {
        return title;
    }

    /**
     * 根据数据源枚举类型获取数据源类型编码
     * @param type 数据源枚举类型
     * @return 非空表示存在，返回匹配的数据源类型编码，空表示不存在此。
     */
    public static String getCode(String type) {
        final Optional<DbTypeEnum> typeEnumOptional = Arrays.stream(DbTypeEnum.values()).
                filter(
                        dbTypeEnum -> dbTypeEnum.toString().equalsIgnoreCase(type)
                ).findFirst();

        // 存在返回code
        if(typeEnumOptional.isPresent()) {
            return typeEnumOptional.get().code;
        }

        return "";
    }
}
